package vip.liux.contracts.infrastructure.automap;

import org.mapstruct.*;

/**
 * MapStruct全局配置类
 * 用于定义所有Mapper的公共配置
 */
@MapperConfig(
    // 组件模型，默认default。可选值：default(默认), cdi, spring, jsr330
    componentModel = "default",
    
    // 未映射的目标属性处理策略。可选值：
    // ERROR - 未映射的目标属性将导致错误报告
    // WARN - 未映射的目标属性将产生警告
    // IGNORE - 忽略未映射的目标属性
    unmappedTargetPolicy = ReportingPolicy.WARN,
    
    // 未映射的源属性处理策略
        unmappedSourcePolicy = ReportingPolicy.IGNORE,
    
    // 空值检查策略
    nullValueCheckStrategy = NullValueCheckStrategy.ON_IMPLICIT_CONVERSION,
    
    // 空值映射策略。可选值：
    // RETURN_NULL - 如果源为null，则返回null
    // RETURN_DEFAULT - 如果源为null，则返回默认值
    nullValueMappingStrategy = NullValueMappingStrategy.RETURN_NULL,
    
    // 空值属性映射策略
    nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.SET_TO_NULL,
    
    // 集合映射策略。可选值：
    // ACCESSOR_ONLY - 仅使用访问器方法
    // SETTER_PREFERRED - 优先使用setter方法
    // ADDER_PREFERRED - 优先使用adder方法
    // TARGET_IMMUTABLE - 目标为不可变集合
    collectionMappingStrategy = CollectionMappingStrategy.ACCESSOR_ONLY,
    
    // 依赖注入策略。可选值：
    // FIELD - 字段注入
    // CONSTRUCTOR - 构造器注入
    // SETTER - setter方法注入
    injectionStrategy = InjectionStrategy.CONSTRUCTOR,
    
    // 映射继承策略。可选值：
    // EXPLICIT - 显式继承，需要@InheritConfiguration注解
    // AUTO_INHERIT_FROM_CONFIG - 自动继承配置
    // AUTO_INHERIT_ALL_FROM_CONFIG - 自动继承所有配置
    mappingInheritanceStrategy = MappingInheritanceStrategy.AUTO_INHERIT_FROM_CONFIG,
    
    // 是否使用构建器而不是setter
    builder = @Builder(
        // 是否禁用构建器
        disableBuilder = false,
        // 构建器方法名
        buildMethod = "build"
    ),
    
    // 是否禁用子流映射方法生成
    disableSubMappingMethodsGeneration = false,
    
    // 类型转换使用的imports
    imports = {},
    
    // 是否使用字段访问而不是getter/setter
    uses = {}
)
public interface MapStructConfig {
}